<?php namespace Common\Model;
use Hdphp\Model\Model;
/* 分类管理模型*/
class Category extends Model
{
 //*操作数据表*/
		protected $table = "Category";
		/*自动验证*/
		protected $validate = array(
		/*验证*/
			array("cname","requried","请输入分类名称",3,3),	
			array("cname","max_len","最多输入10个字符",3,3),
			array("csort","num:20,123456","分类排序必须为数字",3,3),
		);	
//	添加分类/添加子分类
	public function store()
	{
		/*自动验证*/
		if(!$this->create()) return false;
		//执行添加
		/*add是Model模型里的方法似inset into 添加*/
		return $this->add();
		
		
	}
	
	
	/*添加子集 先获取要编辑的cid的所有子集*///$cid表示要给谁添加子集（序号）
	/*所属分类*/
	public function getCataData($cid)
	{
//		var_dump($cid);
		//1.获得当前的所有子集
		//数组数据，找那一条数据的子集
		$cids = $this->getSon($this->get(),$cid);
	
		//2.把自己压入数组中
		$cids[] = $cid;
	
		/*2将数组转化为字符串*///以，为分割点，$cids要转化的数组名称
		$cids = implode(",", $cids);
		/*3.获得除了自己和子集*///cid为序号
		$data = $this->db->where("cid not in($cids)")->get();
//		p($data);
		return Data::tree($data,"cname");
	}
	/*先获得自己的子集*/
	public function getSon($data,$cid)
	{
		static $temp =array();
		foreach($data as $k=>$v)
		{
			//条件成立的时候，当前这一条就是$cid这一条的子集
			if($cid ==$v['pid'])
			{
				$temp[]=$v['cid'];
				//递归调用继续寻找子集
				$this->getSon($data,$v['cid']);
			}
			
		}
		return $temp;
	
		
	}
	
		/*编辑*/
	public function edit()
	{
		//自动验证
		if(!$this->create()) return false;
		//执行编辑
		//编辑的条件：在模板的form表单中加隐藏域，name为主键字段，value为要修改的数据id
		
		$this->save();
	}
	
	/*删除 子集将要上升一个阶段将取代*/
	public function del($cid)
	{
		//获得要删除数据的pid
		//pluck 获取单一字段的值
		$pid = $this->where('cid',$cid)->pluck('pid');
		
		/*执行修改*/
		$this->where('pid',$cid)->update(array("pid"=>$pid));
		/*删除*/
		$this->where('cid',$cid)->delete();
	}

}


	

























